Точка задается
своими x и y координатами: (x, y).
Заданы две точки
(a, b), (c, d) и целое число n. Сложите их.
·
Сложение двух точек означает сложение их
соответствующих координат: (1, 2) + (3, 4) = (4, 6).
·
Сложение точки и числа означает прибавление
числа к ее обеим координатам: (1, 2) + 10 = (11, 12).
Напишите код
согласно следующего интерфейса:
class Point // C++
{
private:
int x, y;
public:
Point(int x =
0, int y = 0); //
Конструктор
void Read(void); // Читает координаты
вектора
void Print(void); // Выводит
координаты вектора
Point operator
+(const Point &a); //
Перегрузка оператора +:
//
возвращает сумму двух точек
Point operator
+(int value); //
Перегрузка оператора +:
// возвращает сумму точки и целого
числа
int getX(void); // Вернуть x
координату
int getY(void); // Вернуть y
координату
void SetX(int x); // Установить x
координату
void SetY(int y); // Установить y
координату
};
class Point // Java
{
private int x, y;
Point(int x, int y); // Конструктор
public String toString();
//
Возвращает координаты вектора
public Point Add(int v); // Прибавить к
обеим координатам точки
// значение v, вернуть точку
public Point Add(Point
p); //
Прибавить точку p, вернуть сумму
// двух точек
public int getX(); // Вернуть x
координату
public int getY(); // Вернуть y
координату
public void SetX(int x); // Установить
x координату
public void SetY(int y); // Установить
y координату
};
Вход. Первая строка содержит координаты a и b
первой точки. Вторая строка содержит координаты c и d второй точки.
Третья строка содержит целое число n.
Все числа по модулю не превосходят 10000.
Выход. Выведите
сумму двух точек и числа.
Пример входа |
Пример выхода |
1 2 3 4 10 |
14 16 |
ООП – перегрузка
операторов
Анализ алгоритма
Объявим класс Point и реализуем
требуемые методы.
Реализация алгоритма
#include <stdio.h>
class Point
{
public:
int x, y;
Point(int x = 0, int y = 0) : x(x), y(y) {}
void Read(void)
{
scanf("%d %d",&x,&y);
}
void Print(void)
{
printf("%d %d\n",x,y);
}
Point operator +(const Point &a)
{
return Point(x + a.x, y + a.y);
}
Point operator +(int value)
{
return Point(x + value, y + value);
}
};
int main(void)
{
Point a, b, c;
a.Read(); b.Read();
int n;
scanf("%d",&n);
c = a + b + n;
c.Print();
return 0;
}
Реализация алгоритма – описание
интерфейса + отдельная реализация методов
#include <stdio.h>
class Point {
public:
Point(int x, int
y);
int getX();
int getY();
void SetX(int
x);
void SetY(int
y);
Point operator+(int
v);
Point operator+(Point &a);
void Read();
void Print();
private:
int x;
int y;
};
Point::Point(int
x = 0, int y = 0) {
this->x = x;
this->y = y;
}
int Point::getX() {
return x;
}
int Point::getY() {
return y;
}
void Point::SetX(int x) {
this->x = x;
}
void Point::SetY(int y) {
this->y = y;
}
Point Point::operator+(int v) {
return Point(x + v, y + v);
}
Point Point::operator+(Point
&a) {
return Point(x + a.getX(), y +
a.getY());
}
void Point::Read() {
scanf("%d %d",&x,&y);
}
void Point::Print() {
printf("%d %d\n",x,y);
}
int main(void)
{
Point a, b, c;
a.Read(); b.Read();
int n;
scanf("%d",&n);
c = a + b + n;
c.Print();
return 0;
}
Java реализация
import java.util.*;
class Point
{
private int x, y;
Point(int x, int y)
{
this.x = x;
this.y = y;
}
public void SetX(int x)
{
this.x = x;
}
public void SetY(int y)
{
this.y = y;
}
public int GetX()
{
return x;
}
public int GetY()
{
return y;
}
public Point Add(Point
a)
{
return new Point(this.x + a.x, this.y + a.y);
}
public Point Add(int x)
{
return new Point(this.x + x, this.y + x);
}
public String
toString()
{
return x + " " + y;
}
}
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int x = con.nextInt(), y = con.nextInt();
Point a = new Point(x,y);
x = con.nextInt(); y = con.nextInt();
Point b = new Point(x,y);
int n = con.nextInt();
Point c = a.Add(b).Add(n);
System.out.println(c);
con.close();
}
}